#include "ObjectWorkerThread.h"
#include <QWaitCondition>
#include <QMutex>
ObjectWorkerThread::ObjectWorkerThread(QObject *parent)
    : QObject(parent)
{
}

ObjectWorkerThread::~ObjectWorkerThread()
{
    qDebug() << "ObjectWorkerThread destroyed";
    if (db2.isOpen()) {
        db2.close();
    }
}

void ObjectWorkerThread::process()
{
    qDebug() << "Thread started";

    // 数据库文件路径
    QString filename = "../chargingpile.db";
    QFileInfo Info(filename);

    if (!Info.exists()) {
        qDebug() << "数据库文件不存在";
        emit finished();
        return;
    }

    // 设置数据库驱动
    db2 = QSqlDatabase::addDatabase("QSQLITE");
    if (!db2.isValid()) {
        qDebug() << "数据库驱动无效";
        emit finished();
        return;
    }

    // 设置数据库参数
    db2.setDatabaseName(filename);

    // 打开数据库
    if (!db2.open()) {
        qDebug() << "数据库打开失败";
        emit finished();
        return;
    }
    qDebug() << "数据库打开成功";

    // 查询数据
    QSqlQuery query(db2);
    int recordCount = 0; // 记录读取的条数
    if (query.exec("SELECT 当前时间, 电流, 电压, 功率 FROM chargingpiles")) {
        while (query.next()) {
            ++recordCount; // 累计读取条数
            m_times.append(query.value(0).toString());
            m_currents.append(query.value(1).toString());
            m_voltages.append(query.value(2).toString());
            m_powers.append(query.value(3).toString());
            //qDebug() << "读取到第" << recordCount << "条记录";
        }
        qDebug() << "查询完成，共读取" << recordCount << "条记录";
    } else {
        qDebug() << "查询失败！错误:" << query.lastError();
    }

    db2.close(); // 关闭数据库连接

    // 通过信号将数据发送给主线程
    emit dataReady(m_times, m_currents, m_voltages, m_powers);



    // 发送完成信号
    emit finished();

    printFirst10Records();
}

void ObjectWorkerThread::printFirst10Records()
{
    qDebug() << "打印前10条记录：";

    int recordCount = qMin(10, m_times.size()); // 计算最多打印的记录数

    if (recordCount == 0) {
        qDebug() << "无记录可打印";
        return;
    }

    for (int i = 0; i < recordCount; ++i) {
        qDebug() << "记录" << i + 1 << ":";
        qDebug() << "当前时间:" << m_times.at(i);
        qDebug() << "电流:" << m_currents.at(i);
        qDebug() << "电压:" << m_voltages.at(i);
        qDebug() << "功率:" << m_powers.at(i);
        qDebug() << "----------------------";
    }
}

